/*
 * PagRelatorioFinal.java
 * 
 * Projeto: Kruskal - SRAC
 * LEDS - Laboratório de Engenharia e Desenvolvimento de Software
 * IFES - Instituto Federal do Espírito Santo - Campus Serra.
 */
package srac.controleatividades.cih;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.List;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.*;
import srac.controleatividades.cci.CtrlAtividade;
import srac.controleatividades.cdp.RelatorioFinal;

public class PagRelatorioFinal extends GenericForwardComposer {

    private CtrlAtividade ctrl = CtrlAtividade.getInstance();
    private Window winRelatorioFinal;
    private Listbox listEtapas;
    private Div boxInformacao;
    private Label msg;

    @Override
    public void doAfterCompose(Component comp) throws Exception {
        super.doAfterCompose(comp);
        ctrl.setPagRelatorioFinal(this);
        while (listEtapas.getItemCount() > 0) {
            listEtapas.removeItemAt(0);
        }
        List<RelatorioFinal> relatorios = ctrl.obterRelatoriosFinal(); //Obter as etapas cadastradas

        if (relatorios != null) {
            for (int i = 0; i < relatorios.size(); i++) {
                Listitem linha = new Listitem(relatorios.get(i).getEtapa().getDescricao(), relatorios.get(i));
                linha.appendChild(new Listcell(relatorios.get(i).getEtapa().getDataInicioSubmissao().getTime().getDate() + "/"
                        + (relatorios.get(i).getEtapa().getDataInicioSubmissao().getTime().getMonth() + 1) + "/"
                        + (relatorios.get(i).getEtapa().getDataInicioSubmissao().getTime().getYear() + 1900)));

                linha.appendChild(new Listcell(relatorios.get(i).getEtapa().getDataFimSubmissao().getTime().getDate() + "/"
                        + (relatorios.get(i).getEtapa().getDataFimSubmissao().getTime().getMonth() + 1) + "/"
                        + (relatorios.get(i).getEtapa().getDataFimSubmissao().getTime().getYear() + 1900)));
                linha.appendChild(new Listcell(relatorios.get(i).getEtapa().getDataFimVerificacao().getTime().getDate() + "/"
                        + (relatorios.get(i).getEtapa().getDataFimVerificacao().getTime().getMonth() + 1) + "/"
                        + (relatorios.get(i).getEtapa().getDataFimVerificacao().getTime().getYear() + 1900)));
                linha.appendChild(new Listcell(relatorios.get(i).getEtapa().getDataFimValidacao().getTime().getDate() + "/"
                        + (relatorios.get(i).getEtapa().getDataFimValidacao().getTime().getMonth() + 1) + "/"
                        + (relatorios.get(i).getEtapa().getDataFimValidacao().getTime().getYear() + 1900)));

                linha.setParent(listEtapas);
            } 
        }
       

    }
    
    public void onCreate$winRelatorioFinal(Event event) {
        //if feito para verificar se existe algum usuario logado, se nao existir eh redirecionado para o login
        if (Executions.getCurrent().getSession().getAttribute("usuario") == null) {
            Executions.sendRedirect("/");
            winRelatorioFinal.detach();
        }
    }
    
    public void onClick$gerarPDF(Event event) {
        File arquivo;
        Listitem listitem = listEtapas.getSelectedItem();
        if (listitem != null) {
            RelatorioFinal r = listitem.getValue();
            
            r.getEtapa().getDataInicioSubmissao();           

            arquivo = ctrl.recuperaArquivoPDF(r.getArquivo(), "Relatorio_"+r.getEtapa().getDescricao());
            
            if (arquivo != null) {
                Filedownload fd = null;
                try {
                    fd.save(arquivo, null);
                } catch (FileNotFoundException ex) {
                    setMensagemAviso("error", "Erro no download do arquivo!");
                }
            }
        } else {
            setMensagemAviso("info", "Selecione uma Etapa!");
        }
    }
    
    public void setMensagemAviso(String tipo, String mensagem) {
        boxInformacao.setClass(tipo);
        boxInformacao.setVisible(true);
        msg.setValue(mensagem);
    }

    public void onClick$boxInformacao(Event event) {
        boxInformacao.setVisible(false);
    }
}
